import createElement from "./createElement";
import updateChildren from "./updateChildren";
export default function patchVnode(newvnode, oldvnode) {
    if (oldvnode === newvnode) return;
    if (newvnode.text != undefined && newvnode.children == undefined || newvnode.children.length == 0) {
        // console.log(("新节点有text属性"));
        if (newvnode.text != oldvnode.text) {
            // 新节点的text属性不同，就替换老的text
            // console.log(oldvnode,newvnode);
            oldvnode.elm.innerText = newvnode.text
        }
    } else {
        // console.log("没有text属性");
        // 判断老节点有没有子节点
        if (oldvnode.children != undefined && oldvnode.children.length > 0) {
            //做复杂的情况， 新老都有子节点
            // console.log(oldvnode.elm);
            // newvnode.elm = oldvnode.elm
            updateChildren(oldvnode.elm , oldvnode.children,newvnode.children)
        
            // 所有未处理的节点开头
            // let un=0
            // for (let i = 0; i < newvnode.children.length; i++) {
            //     let ch = newvnode.children[i]
            //     // 作个标记，表示该节点是否处理完
            //     let isExist = false
            //     // 再次遍历key是否有
            //     for (let j = 0; j < oldvnode.children.length; j++) {
            //         if (oldvnode.children[j].sel == ch.sel && oldvnode.children[j].key == ch.key) {
            //             // 说明是相同key的相同节点
            //             isExist = true
            //         }
            //     }
            //     // 没有处理
            //     // console.log(ch,i,"aa");
            //     if (!isExist) {
            //         // console.log(ch,i,"aa1");
            //         let dom=createElement(ch)
            //         ch.elm=dom
            //         if(un<oldvnode.children.length){
            //             oldvnode.elm.insertBefore(dom,oldvnode.children[un].elm)
            //         }else{
            //             oldvnode.elm.appendChild(dom)
            //         }
                   
            //     }else{
            //         // 处理指针下移
            //         un++;
            //         //还需要判断位置是一样
            //         if(i==j){
            //             // 相同key的节点的位置相同

            //         }else{
            //             // 位置不同
            //         }
                    
            //     }
            // }

        } else {
            // 老的没有子节点，新的有子节点
            // 先清空老节点的内容
            oldvnode.elm.innerText = ""
            // 再遍历新节点的内容，创建dom，上树
            for (let i = 0; i < newvnode.children.length; i++) {
                let dom = createElement(newvnode.children);
                oldvnode.elm.appendChild(dom);
            }

        }



        
    }

    


}